Automatisches Eingabefeld [SAPGUI]

In der SE80 gibt es das Feld bereits lange und heute ist es mir wieder in der SE16T, der neuen Suchfunktion für Tabellen, Transaktionen und vieles Anderes, untergekommen.
Das Eingabefeld, das mit Klasse CL_GUI_INPUT_FIELD programmiert werden kann, ermöglicht es, eine Aktion auszuführen, ohne dass die AnwenderIn extra auf ENTER drücken muss. Ideal für die Einschränkung von Suchergebnissen.
Wie das funktioniert, zeige ich dir an dem kleinen Demoprogramm, in dem die Ergebnisliste direkt bei der Eingabe entsprechend eingeschränkt wird.

Technik
Um das Eingabefeld benutzen zu können, braucht man – wie bei fast allen GUI-Controls – einen Container. An diesen Container wird die Klasse CL_GUI_INPUT_FIELD angebunden. Bei der Instanziierung gibt man an, ob die Funktion AUTO SUBMIT aktiviert werden soll oder nicht. Dann setzt man den Handler für das Ereignis SUBMIT und kann hier entsprechende Aktionen durchführen. Irritierenderweise gibt es auch ein Ereignis AUTO_SUBMIT, das aber anscheinend nicht verwendet wird.
Coding
REPORT. PARAMETERS p_test TYPE text80. CLASS input DEFINITION. PUBLIC SECTION. METHODS init. PRIVATE SECTION. METHODS on_submit FOR EVENT submit OF cl_gui_input_field IMPORTING input. DATA salv TYPE REF TO cl_salv_table. DATA plants TYPE STANDARD TABLE OF t001w WITH DEFAULT KEY. DATA docker_search TYPE REF TO cl_gui_docking_container. DATA docker_salv TYPE REF TO cl_gui_docking_container. DATA input TYPE REF TO cl_gui_input_field. ENDCLASS. CLASS input IMPLEMENTATION. METHOD init. docker_salv = NEW #( ratio = 95 side = cl_gui_docking_container=>dock_at_bottom ). docker_search = NEW #( ratio = 5 side = cl_gui_docking_container=>dock_at_bottom ). input = NEW #( parent = docker_search input_prompt_text = 'input_prompt_text' label_text = 'Plant' label_width = 40 activate_history = abap_true activate_find_button = abap_true button_icon_info = icon_search button_tooltip_info = 'Enter plant name to filter values' activate_auto_submit = abap_true default_text = 'default_text' ) . SET HANDLER on_submit FOR input. cl_gui_container=>set_focus( input ). SELECT * FROM t001w INTO TABLE @plants. TRY. cl_salv_table=>factory( EXPORTING r_container = docker_salv IMPORTING r_salv_table = salv CHANGING t_table = plants ). salv->display( ). CATCH cx_salv_msg. ENDTRY. ENDMETHOD. METHOD on_submit. DATA(filters) = salv->get_filters( ). filters->remove_filter( columnname = 'NAME1' ). IF input IS NOT INITIAL. TRY. filters->add_filter( columnname = 'NAME1' sign = 'I' option = 'CP' low = |*{ input }*| ). CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing. ENDTRY. ENDIF. salv->refresh( ). ENDMETHOD. ENDCLASS. INITIALIZATION. NEW input( )->init( ).
- Automatisches Eingabefeld [SAPGUI] - 9. Oktober 2025
- So verhinderst du Jobstarts zur falschen Zeit - 15. September 2025
- [apple] iCloud-Photos herunterladen - 21. Juli 2025